package org.example.d8_generics_method;

import java.util.ArrayList;

public class Text {
    public static void main(String[] args) {
        //目标：掌握泛型方法的定义和使用
       String rs =  test("java");
        System.out.println(rs);

        Dog d = test(new Dog());
        System.out.println(d);


        //需求：所有的汽车可以一起参加比赛。
        ArrayList<Car> cars = new ArrayList<>();
        cars.add(new BENZ());
        cars.add(new BMW());
        go(cars);

        ArrayList<BMW> bnws = new ArrayList<>();
        bnws.add(new BMW());
        bnws.add(new BMW());
        go(bnws);

        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        go(benzs);


//        ArrayList<Dog> dogs = new ArrayList<>();
//        dogs.add(new Dog());
//        dogs.add(new Dog());
//        go(dogs);
    }
    //通配符？，在使用泛类型的时候可以代表一切类型     ?extends Car  (上限)    ? super Car  （下限）
    public static  void go ( ArrayList<?extends Car> cars){}

 // public static <T extends Car> void go ( ArrayList<T> cars){}



    //泛型方法
//    修饰符 <类型变量 类型变量 ...>  返回值类型  方法名 （形参列表）{}
    public static <T> T test(T t){
        return t;
    }
    //需求：所有的汽车可以一起参加比赛。



}
